﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using TwoGesture.Resources;
namespace TwoGesture
{
    public partial class AgregarPregunta : Form
    {

        private static AgregarPregunta objAgregarPregunta = null;
        private ControlAdministrador ObjCtrAdministrador = ControlAdministrador.InsCtrAdministrador();
        private ControlPregunta ObjCtrPregunta = ControlPregunta.InsControlPregunta();
        private ControlTest objCtrTest = ControlTest.insControlTest();
        private ControlCrearCuest objCtrCuest = ControlCrearCuest.instCrearCuest();
        private string contra = "";
        private string valor = string.Empty;
        private string banderausuario = string.Empty;
        private BindingSource bindingsource1 = new BindingSource();
        private SqlDataAdapter dataAdapter = new SqlDataAdapter();
        private MailMessage mail;
        private string To;
        private string bancorreo;
        private string Body;
        private String subject;
        
        
        
        public AgregarPregunta()
        {
            InitializeComponent();

        }

        public AgregarPregunta(string valor_)
        {
            valor = valor_;
            InitializeComponent();
        }

      

        public static void cierre()
        {
            objAgregarPregunta = null;
        }

        public static AgregarPregunta singleton()
        {
            if (objAgregarPregunta == null)
            {
                objAgregarPregunta = new AgregarPregunta();
            }
            return objAgregarPregunta;
        }

        //--------------------------------------------------------------------------------
        //-----------------------Formulario Agragar Pregunta------------------------------
        //--------------------------------------------------------------------------------

        public void LLenarCmoCategorias()
        {
            SqlDataReader dr = ObjCtrPregunta.LlenarCombo();
            List<Categorias> Lista = new List<Categorias>();
            while (dr.Read())
            {
                Lista.Add(new Categorias() { Descripcion = dr.GetString(1), id = dr.GetInt32(0) });
            }
            CboCategorias.DataSource = Lista;

            CboCategorias.DisplayMember = "Descripcion";
            CboCategorias.ValueMember = "Id";
        }

        public void LlenarTablaPregunta()
        {
            SqlDataReader dr = ObjCtrPregunta.LlenarTabla();
            DgvPreguntas.ColumnCount = 3;
            DgvPreguntas.Columns[0].Name = "Pregunta";
            DgvPreguntas.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            DgvPreguntas.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            DgvPreguntas.Columns[1].Name = "idpregunta";
            DgvPreguntas.Columns[1].Visible = false;
            DgvPreguntas.Columns[2].Name = "idtema";
            DgvPreguntas.Columns[2].Visible = false;
            DgvPreguntas.Rows.Clear();
            CboCategorias.SelectedIndex = -1;
            while (dr.Read())
            {
                DgvPreguntas.Rows.Add(dr.GetString(1), dr.GetInt32(0), dr.GetInt32(2));
            }

            this.DgvPreguntas.CellClick += (this.DgvPreguntas_Click);
        }

        public void DgvPreguntas_Click(object sender, DataGridViewCellEventArgs e)
        {
            int rowIndex = e.RowIndex;
            if (rowIndex >= 0)
            {
                txtpregunta.Text = DgvPreguntas.Rows[rowIndex].Cells[0].Value.ToString();
                LblIdPregunta.Text = DgvPreguntas.Rows[rowIndex].Cells[1].Value.ToString();

                CboCategorias.SelectedValue = DgvPreguntas.Rows[rowIndex].Cells[2].Value;
                SqlDataReader dr = ObjCtrPregunta.LlamarRespuestas(this.LblIdPregunta);


                //int[] valores = new int[4];


                dr.Read();
                txtrespuesta1.Text = dr.GetString(1);
                //valores[0] = dr.GetInt32(2);

                cboValor1.SelectedIndex = dr.GetInt32(2) - 1;
                dr.Read();
                txtrespuesta2.Text = dr.GetString(1);
                //valores[1] = dr.GetInt32(2);
                cboValor2.SelectedIndex = dr.GetInt32(2) - 1;
                dr.Read();
                txtrespuesta3.Text = dr.GetString(1);
                //valores[2] = dr.GetInt32(2);
                cboValor3.SelectedIndex = dr.GetInt32(2) - 1;
                dr.Read();
                txtrespuesta4.Text = dr.GetString(1);
                //valores[3] = dr.GetInt32(2);

                cboValor4.SelectedIndex = dr.GetInt32(2) - 1;

                //int vMayo = ObjCtrPregunta.CompararValor(valores);
                //switch (vMayo)
                //{
                //    case 0:
                //        RbnA.Checked = true;
                //        break;
                //    case 1:
                //        RbnB.Checked = true;
                //        break;
                //    case 2:
                //        RbnC.Checked = true;
                //        break;
                //    case 3:
                //        RbnD.Checked = true;
                //        break;
                //}
            }
        }

      

        public void insertar_preguntas()
        {

            if (this.txtpregunta.Text.Trim().ToString() == "")
            {
                MessageBox.Show("El campo pregunta esta vacio");
            }
            else
            {
                if (this.txtrespuesta1.Text.Trim().ToString() == "" || this.txtrespuesta2.Text.Trim().ToString() == "" ||
                    this.txtrespuesta3.Text.Trim().ToString() == "" || this.txtrespuesta4.Text.Trim().ToString() == "")
                {
                    MessageBox.Show("Falta llenar alguna de las respuestas");
                }
                else
                {
                    Conexion con = new Conexion();
                    con.InsertarPregunta(this.txtpregunta.Text.Trim().ToString(), this.txtrespuesta1.Text.Trim().ToString(),
                        this.txtrespuesta2.Text.Trim().ToString(), this.txtrespuesta3.Text.Trim().ToString(),
                        this.txtrespuesta4.Text.Trim().ToString());
                    this.txtpregunta.Clear();
                    this.txtrespuesta1.Clear();
                    this.txtrespuesta2.Clear();
                    this.txtrespuesta3.Clear();
                    this.txtrespuesta4.Clear();

                }
            }
        }

        private void datatabla2(object sender, DataGridViewCellMouseEventArgs e)
        {


            if (e.RowIndex != -1)
            {
                if (e.ColumnIndex != 1)
                {
                    if (!string.IsNullOrEmpty(DgvPreguntas.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()))
                    {
                    }
                }
            }
        }

        
        public void LimpiarPreguntas()
        {

            this.txtpregunta.Clear();
            this.txtrespuesta1.Clear();
            this.txtrespuesta2.Clear();
            this.txtrespuesta3.Clear();
            this.txtrespuesta4.Clear();
            this.CboCategorias.SelectedIndex = -1;
            this.RbnA.Checked = false;
            this.RbnB.Checked = false;
            this.RbnC.Checked = false;
            this.RbnD.Checked = false;
            this.LblIdPregunta.Text = "";
            this.cboValor1.SelectedIndex = -1;
            this.cboValor2.SelectedIndex = -1;
            this.cboValor3.SelectedIndex = -1;
            this.cboValor4.SelectedIndex = -1;
        }

       
        private void llenarCombos()
        {

            cboValor1.Items.Add("1");
            cboValor1.Items.Add("2");
            cboValor1.Items.Add("3");
            cboValor1.Items.Add("4");
            cboValor1.SelectedIndex = -1;
            cboValor2.Items.Add("1");
            cboValor2.Items.Add("2");
            cboValor2.Items.Add("3");
            cboValor2.Items.Add("4");
            cboValor1.SelectedIndex = -1;
            cboValor3.Items.Add("1");
            cboValor3.Items.Add("2");
            cboValor3.Items.Add("3");
            cboValor3.Items.Add("4");
            cboValor1.SelectedIndex = -1;
            cboValor4.Items.Add("1");
            cboValor4.Items.Add("2");
            cboValor4.Items.Add("3");
            cboValor4.Items.Add("4");
            cboValor1.SelectedIndex = -1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            FormAdmin a = FormAdmin.singleton();
            a.Enabled = true;

            this.Hide();

        }

        private void button5_Click(object sender, EventArgs e)
        {
             AgregarCategoria objAgrCategoria = new AgregarCategoria();
            objAgrCategoria.Show();
            this.Hide();
        }

        private void AgregarPregunta_Load(object sender, EventArgs e)
        {
            this.LLenarCmoCategorias();
            this.LlenarTablaPregunta();
            this.llenarCombos();
        }

        private void BtnGuardarPregunta_Click_1(object sender, EventArgs e)
        {

            String[] datos = new String[5];
            ComboBox[] CalifRespues = new ComboBox[4];
            string categoria = "";

            datos[0] = this.txtpregunta.Text.ToString();
            datos[1] = this.txtrespuesta1.Text.ToString();
            datos[2] = this.txtrespuesta2.Text.ToString();
            datos[3] = this.txtrespuesta3.Text.ToString();
            datos[4] = this.txtrespuesta4.Text.ToString();
            CalifRespues[0] = this.cboValor1;
            CalifRespues[1] = this.cboValor2;
            CalifRespues[2] = this.cboValor3;
            CalifRespues[3] = this.cboValor4;
            if (this.CboCategorias.SelectedValue != null)
            {
                categoria = this.CboCategorias.SelectedValue.ToString();
            }
            bool bandera = ObjCtrPregunta.validacionformulario(this.txtpregunta, this.txtrespuesta1, this.txtrespuesta2, this.txtrespuesta3
                , this.txtrespuesta4, CalifRespues, this.LblIdPregunta, categoria);
            if (bandera)
            {
                ObjCtrPregunta.GuardarPregunta(this.CboCategorias.SelectedValue.ToString(), this.LblIdPregunta, datos, CalifRespues);
                this.LlenarTablaPregunta();
                this.LimpiarPreguntas();
            }
        }

        private void BtnEliminarPregunta_Click(object sender, EventArgs e)
        {
            ObjCtrPregunta.BajaPregunta(LblIdPregunta);
            this.LimpiarPreguntas();
            this.LlenarTablaPregunta();
        }

        private void BtnLimpiarPregunta_Click(object sender, EventArgs e)
        {
            this.LimpiarPreguntas();
        }
    }
}
